GJB 5369-2005 航天型号软件C语言安全子集
ID: |
C770414A5D784D5683E55F569372EAB9 |
文件大小(MB): |
2.09 |
页数: |
52 |
文件格式: |
|
日期: |
2024-7-14 |
购买: |
文本摘录(文本识别可能有误,但文件阅览显示及打印正常,pdf文件可进行文字搜索定位):
中华人民共和国国家军用标准,FL 0137 GJB 5369-2005,航天型号软件C语言安全子集,Safe subset of C language for space armament software,2005 -04-11 发布2005^07-01 实施,国防科学技术工业委员会 发布,GJB 5369-2005,目 次,刖百VI,1范围 1,2规范性引用文件.1,3术语和定义 1,4 细则.. 1,4.1 声明定义类 1,4.1.1强制类1,4.1.1.1 过程名禁止被重用1,4.1.1.2 标号名禁止被重用. 1,4.1.1.3 禁止在结构体定义中含有空域2,4.1.1.4 禁止声明多重标号.. 2,4.1.1.5 参数必须使用类型声明 2,4.1.1.6 在过程声明中必须对参数说明3,4.1.1.7 禁止过程参数只有类型没有标识符. 3,4.1.1.8 禁止在过程参数表中使用省略号,4.L1.9禁止重新定义使用C或CH的关键字,4.1.1.10,4.1.1.11,4.1.1.12,4.1.1.13,4.1.1.14,4.1.1.15,4.1.1.16,禁止过程或函数中的参数表为空,禁止在同一个宏中使用多个#或##,禁止定义不象函数的宏,禁止在宏中包含不允许的项,禁止重新定义保留字,字符型变量必须明确定义是有符号还是无符号,禁止对一个名字重新定义.,4,4,4,4,5,5,5,4.1.1.17 用typedef自定义的类型禁止被重新定义.6,4.1.1.18 禁止在同一个文件中有/if而没有#endif丒6,4.1.1.19 禁止数组没有边界限定。..6,4.1.1.20 禁止在#include<..>中使用绝对路径名.. 6,4.1.1.21 禁止结构体声明不完整.. 7,4.1.1.22 禁止参数的声明形式上不一致. 7,4.1.2推荐类,4.1.2.1,4.1.2.2,建议使用typedef在统一的变量声明头文件中对基本变量类型重新定义,避免将过程定义为参数,4.1.2.3 过程中避免使用过多的参数,建议不要超过20个.. 8,4.1.2.4 在结构体定义中谨慎使用位域8,4.1.2.5 避免在一个程序块中单独使用#(1,输1. 8,4.1.2.6 避免在一个程序块中单独使用#undef丒 9,4.1.2.7,4.1.2.8,谨慎使用#pragma,3,3,7,7,7,9,谨慎使用联合(union)的声明9,I,GJB 5369-2005,4.1.2.9在结构体中谨慎使用无名位域. 10,4.2版面书写类10,4.2.1强制类10,4.2.1.1 过程体必须用大括号括起来. 10,4.2.1.2 循环体必须用大括号括起来.. 10,4.2.1.3 then/else中的语句必须用大括号括起来.10,4.2.1.4,4.2.1.5,逻辑表达式的连接必须使用括号,禁止在头文件前有可执行代码,11,11,4.2.1.6 宏参数必须用括号括起来. 11,4.2.1.7 嵌入汇编程序的过程必须是纯汇编程序..12,4.2.1.8 头文件名禁止使用和“/*”等字符12,4.2,1.9 禁止字符串中单独使用字符串的终止必须使用“\0” .. 12,4.2,1.10 main 必须定义为 int main (void)或 int main(int, char* [])的形式.. 12,4.2.2 推荐类 13,4.2.2.1建议一个文件中的程序总行不超过2000行. 13,4.222建议一个过程或函数中的程序总行不超过200行.. 13,4.3 分支控制类.. 13,4.3.1 强制类. 13,4.3.1.1 禁止条件判别成立时相应分支无执行语句.. 13,43.1.2 在if…else if语句中必须使用else分支.. 13,4.3.13禁 止条件判别的else分支无可执行语句.14,4.3.1.4 在 switch 语句中必须有 default语句 15,4.3.1.5 禁止使用空switch语句.. 15,4.3.1.6 禁止switch 语句中只包含default语句.15,4.3.1.7 禁止switch的case语句不是由break终止. 16,4.3.1.8 禁止switch的case语句中无任何可执行语句 16,4,4指针使用类17,4.4.1 强制类.. 17,4.4.1.1 禁止将参数指针赋值给过程指针17,4.4.1.2 禁止指针的指针超过两级 17,4.4.1.3 禁止将过程声明为指针类型. 17,4.4.2 推荐类.. 18,4.4.2.1 谨慎使用指针的逻辑比较1,4.4.2.2谨慎对指针进行代数运算 1,4.5 跳转控制类.. 1,4.5.1 强制类..1,4.5.1.1 禁止直接从过程中跳出.. 1,4.5.1.2 禁止使用 goto 语句.. 19,452推荐类.. 19,4.5.2.1 避免使用 setjmp/longjmp,4.6运算处理类,19,19,4.6.1 强制类.. 19,4.6.1.1禁止在非赋值表达式中出现赋值操作符. 19,II,GJB 5369-2005,4.6.1.2,4.6.1.3,4.6.1.4,4.6.1.5,4.6.1.6,4.6.1.7,4.6.1.8,4.6.1.9,4.6.1.10,4.6.L11,4.6.1.12,4.6J.13,4.6.1.14,4.6.1.15,4.6.1.16,4.6.1.17,4.6.1.18,数组的使用必须保证不会出现越界,禁止对有符号类型进行移位运算,对变量进行移位运……
……